package string;

/**
 * Java字符串由char值序列组成。从3.3.3节“char类型”已经看到，
 * char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元。
 * 大多数的常用Unicode字符使用一个代码单元就可以表示，而辅助字符需要一对代码单元表示
 */

public class Demo01 {
    public static void main(String[] args) {
        String greeting = "Hello";
        // 字符串的码单元
        int n = greeting.length();
        // 实际的长度即码点的数量，可以调用
        int cupCount = greeting.codePointCount(0, greeting.length());
        System.out.println("码单元：" + n + "码点：" + cupCount);

        /**
         * 字符串之间使用+号拼接时，系统底层会自动创建一个StringBuilder对象
         * 然后再调用append方法完成拼接
         * 最后再调用toString方法转换为String
         */
        String s1 = "abc";
        String s2 = "ab";
        String s3 = s2 + s1;
        System.out.println(s3 == s1); // false
        /**
         * java 常量优化机制，在编译时，就会将"a"+"b"+"c"拼接为"abc"
         */
        String s4 = "abc";
        String s5 = "a"+"b"+"c";
        System.out.println(s4 == s5); // true

    }
}
